<?php
namespace app\controller;

use app\BaseController;
use think\facade\Db;
use think\facade\Session;
use think\facade\View;

class User extends BaseController
{
    /**
     * 用户登录页面
     */
    public function login()
    {
        if (is_logged_in()) {
            return redirect('/');
        }
        return View::fetch('user/login');
    }

    /**
     * 用户注册页面
     */
    public function register()
    {
        if (is_logged_in()) {
            return redirect('/');
        }
        return View::fetch('user/register');
    }

    /**
     * 处理登录请求
     */
    public function doLogin()
    {
        $username = $this->request->post('username');
        $password = $this->request->post('password');

        if (empty($username) || empty($password)) {
            return error('用户名和密码不能为空');
        }

        $user = Db::name('user')->where('username', $username)->find();
        if (!$user) {
            return error('用户不存在');
        }

        if (!password_verify($password, $user['password'])) {
            return error('密码错误');
        }

        // 登录成功
        Session::set('user_id', $user['id']);
        Session::set('username', $user['username']);

        return success(['user_id' => $user['id'], 'username' => $user['username']], '登录成功');
    }

    /**
     * 处理注册请求
     */
    public function doRegister()
    {
        $username = $this->request->post('username');
        $password = $this->request->post('password');
        $confirmPassword = $this->request->post('confirm_password');

        if (empty($username) || empty($password)) {
            return error('用户名和密码不能为空');
        }

        if ($password !== $confirmPassword) {
            return error('两次输入的密码不一致');
        }

        if (strlen($username) < 3 || strlen($username) > 20) {
            return error('用户名长度应在3-20个字符之间');
        }

        if (strlen($password) < 6) {
            return error('密码长度不能少于6位');
        }

        // 检查用户名是否已存在
        $existingUser = Db::name('user')->where('username', $username)->find();
        if ($existingUser) {
            return error('用户名已存在');
        }

        // 创建用户
        $userData = [
            'username' => $username,
            'password' => password_hash($password, PASSWORD_DEFAULT),
            'created_at' => date('Y-m-d H:i:s'),
            'updated_at' => date('Y-m-d H:i:s')
        ];

        $userId = Db::name('user')->insertGetId($userData);

        if ($userId) {
            // 自动登录
            Session::set('user_id', $userId);
            Session::set('username', $username);
            return success(['user_id' => $userId, 'username' => $username], '注册成功');
        }

        return error('注册失败，请稍后重试');
    }

    /**
     * 用户退出登录
     */
    public function logout()
    {
        Session::clear();
        return success(null, '退出成功');
    }

    /**
     * 获取用户信息
     */
    public function info()
    {
        if (!is_logged_in()) {
            return error('请先登录');
        }

        $userId = get_user_id();
        $user = Db::name('user')->where('id', $userId)->find();

        if (!$user) {
            return error('用户不存在');
        }

        // 不返回密码信息
        unset($user['password']);

        return success($user);
    }
}